refactor: rename icon field to logo and require URL-only values - #118
Merged
Conversation
The server-definition `icon` field has long accepted both emoji and URLs, which made icon rendering ambiguous in the registry UI (the discover site showed raw emoji where a product logo was intended). This PR: - Renames `icon` to `logo` in every server definition and example, and replaces the seven remaining emoji icons (🛡 mcpshield, 🐛 sentry x3, ⚡ supabase x2, 🪞 vardoger) with real logo URLs sourced from GitHub org avatars. - Updates the JSON schema to accept `logo` as `format: uri` with an `^https?://` pattern, and keeps `icon` as a deprecated alias with the same URL constraint (no more emoji). Emits helpful messages so contributors understand which field to use. - Adds schema-validation tests that reject emoji in both `icon` and `logo`, assert every server file uses `logo` (not `icon`), and assert every `logo` is an HTTP(S) URL. - Updates contributor docs — CONTRIBUTING, AGENTS, README, the PR template, and the examples README — plus the `mcp-server-crawler` skill that agents use to draft new definitions. This is the source-of-truth rename; the bundler, registry API, and discover UI land separate PRs that mirror both fields on output so the desktop app (which still reads `icon`) keeps working. Signed-off-by: Mohammod Al Amin Ashik <maa.ashik00@gmail.com>
The rename made emoji invalid under the URL-only `logo` schema, so the example server definitions would not validate. Use the matching GitHub organisation avatars for each example's real-world service (GitHub, Atlassian, Cloudflare, Notion) so copy-paste templates pass validation out of the box. Signed-off-by: Mohammod Al Amin Ashik <maa.ashik00@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
iconfield tologoacross all 116 server definitions and examples, and replaces the 7 remaining emoji icons (mcpshield, sentry x3, supabase x2, vardoger) with real GitHub-avatar logo URLs.logois nowformat: uriwith pattern^https?://; the deprecatediconalias kept for backward compatibility is now also URL-only (no more emoji).iconandlogo, assert every server file useslogo, and assert everylogois an HTTP(S) URL..claude/skills/mcp-server-crawler.mdskill.This is the source-of-truth rename. Three companion PRs land the supporting changes so the desktop app (which reads
icon) keeps working while the registry rolls over:icon/logoon bundle outputicon/logoon every server responselogo, falls back toicon+ emojiMerge / deploy order
mcpmux.bundlerandmcpmux.serverhub.apifirst — they mirror both fields on output.bundle/latest.jsonwith the new shape on the next push.mcpmux.discover.uilast — starts preferringlogobut still falls back.iconcontinues to be populated by the API.Test plan
pnpm validate:all— all 116 servers passpnpm test— existing pre-merge failures on main (com.example-defaults+ 4 unknown-category servers from recent PRs) are unrelated to this PR and noted separatelybundle/latest.jsonrebuild includes both fields for migrated servers